#ifndef _memoria_h
#define _memoria_h

/******************************************************************************/

/* NOTA:
 * 
 * Se considera un sistema con un maximo de 8Mb. Para direccionar esta memoria
 * se necesitan dos tablas de paginas. Los primeros 4Mb, es decir, la primer
 * tabla es comun a todos los procesos. La segunda tabla se modifica segun el
 * proceso que este corriendo; habilitando solo las paginas que corresponden
 * al mismo. */

/******************************************************************************/

# include "libasm.h"
# include "defs.h"

/******************************************************************************/
/* Funcion que inicia y habilita la paginacion. Tambien realiza un mapeo de la
 * memoria del sistema para manejar la alocacion de bloques de memoria a las
 * distintas tablas de paginas. */

int init_paging(void);

/******************************************************************************/
/* Funcion que recorre el mapa de memoria y devuelve el primer bloque de
 * memoria libre. */

//void * balloc (int processPid, int cantidad);

/******************************************************************************/
/* Funcion que libera un bloque de memoria a partir de su direccion. */

//void bfree (int processPid);

/******************************************************************************/
/* Funciones que habilitan o deshabilitan las paginas de memoria segun en
 * proceso que se esta ejecutando. */

//void pages_up (PROCESS *proceso);

//void pages_down (PROCESS *proceso);

/******************************************************************************/
/* Funcion que muestra las direcciones que estan asignadas a algun proceso. */

//int show_memory (void);

/******************************************************************************/

#endif

